#!/opt/lampp/bin/perl -w
use strict;
use warnings;
use DBI;

require('function.pl');

my @queries = qw(电脑 网络 科技 商务 商贸 个体 广告 文化 发展 经销 手机 家具 手机号 二手手机 充值卡 游戏机 数码相机 笔记本 电视机 洗衣机 平板电脑 掌上电脑 手机业务 手机上网卡 mp3 mp4 数码相框 空调 冰箱 电视 桌子 沙发 家纺 床垫 防辐射服 孕妇服装 健身器材 钓鱼用具 珠宝玉器 书法绘画 办公家具 办公设备 纺织 机床 印刷 木工 音乐 书籍 影片 软件 服装 鞋帽 箱包 配饰);
push @queries, qw(司机 编辑 客服 收银员 厨师 保险 普工 营业员 会计 文员 前台 美容师 保洁 保安 导购 面点师 销售代表 焊工 月嫂 技工 培训 家政 行政 人事 财务 公关 行政助理 秘书 出纳 美容 娱乐 广告 上午 医疗 物流 网站编辑 美甲师 网页设计 快递员 营养师);
push @queries, qw(搬家 保姆 快递 疏通 租赁 礼品 送水 快餐 瑜伽 滑雪 美体 餐饮 视频 回收 娱乐 电器 金属 中餐 甜点 火锅 自助 酒类 茶叶 特产 海鲜 酒吧 网吧 舞厅 KTV 家政 配送 物流 月嫂 护理 管家 钟点工 送米 送气 送菜 跑腿 托运 仓储 货运 配货 同城 小件 国内 国际 美容 健身 运动 美发 美甲 瘦脸 脱毛 舞蹈 游泳 武术 羽毛球 拓展 骑马 蹦极 攀岩);
push @queries, qw(广告策划 网站建设 翻译口译 小件速递 国内快递 公司注册 劳动纠纷 商标注册 担保保险 名片 平面 动画 装潢 速记 笔译 本地化翻译 建立网站 域名申请 出租 安防监控 综合布线 外包 国内货运 空车配货 仓储 同城快递 货物快递 小件 法律顾问 商业纠纷 援助 办证咨询 代办审批 年检 会计服务 代理记账 验资 心理咨询 起名风水 商标转让 专项审批 注册 纸类印刷 数码印刷 复写 广告招牌 led制作 吸塑 人像证卡 pvc卡 金属卡);
#my @queries = qw(经销);
#my @domains = qw(ganji 58 koubei alibaba jiancai huicong maiwang);
#my @domains = qw(ganji 58 koubei alibaba jiancai huicong);
my @domains = qw(58);
#my @cities = qw(三亚);
my @cities = load_all_cities();
my $db_host = 'localhost';
my $db = 'crm';
my $db_user = 'zjxia';
my $db_password = 'bblovebb';
my $db_conn = DBI->connect("DBI:mysql:database=$db;host=$db_host", $db_user, $db_password);
# $db_conn->do('set character_set_client =gb2312; set character_set_connection =gb2312; set character_set_database =gb2312; set character_set_results =gb2312; set character_set_server =gb2312; set character_set_system =gb2312; SET collation_server = gb2312_chinese_ci; SET collation_database = gb2312_chinese_ci; SET collation_connection =gb2312_chinese_ci');
$db_conn->do('set names gb2312');
init();
foreach my $query (@queries) {
	my $gbk_query = utf8_to_gb2312($query);
	foreach my $domain (@domains) {
		my $gbk_domain = utf8_to_gb2312($domain);
		foreach my $city (@cities) {
			my $gbk_city = utf8_to_gb2312($city);
			my $site = get_site($city, $domain);
			next if (get_path($query, $domain, $city) eq '' || $site eq '');
			my $url = 'http://'.$site.'/'.get_path($query, $domain, $city).url_encode($query);
			print "$url\n";
			my $content = `wget "$url" -O - -q`;
#			my $content = `wget "$url" -O -`;
#			print $content;
			my $template = get_template($query, $city, $domain);
			my @results;
#			$db_conn->do("delete from snapshot where domain = '$domain' and city = '$city' and query = '$query'");
			while ($content =~ /$template/g) {
				my $result_url = get_result_url($site, $1);
				my ($phone_image_name, $phone_num, $contact_person, $phone_digest) = extract_details($domain, $query, $result_url);
				next if ($phone_image_name eq '' && $phone_num eq '');
				my $title = decode_title($2, $domain);
#				print "$query\t$domain\t$city\t$result_url\t$title\t$phone_image_name\t$phone_num\n";
				my $gbk_title = utf8_to_gb2312($title);
				my $gbk_contact_person = utf8_to_gb2312($contact_person);
				print "$query\t$domain\t$city\t$result_url\t$phone_num\t$phone_digest\t$contact_person\n";

				my $title_encoded = $db_conn->quote($gbk_title);
				push @results, [$result_url, $title];
				my $sql = "select count(*) from snapshot where domain = '$gbk_domain' and city = '$gbk_city' and query = '$gbk_query' and title = $title_encoded and url = '$url'";
				my $request = $db_conn->prepare($sql);
				my $result = $request->execute();
				my ($count) = $request->fetchrow_array;
				if ($count > 0) {
					print "dup 1\n";
					next;
				}
				if ($phone_num ne '') {
					$sql = "select count(*) from snapshot where phone_num = '$phone_num'";
					my $request = $db_conn->prepare($sql);
					my $result = $request->execute();
					my ($count) = $request->fetchrow_array;
					if ($count > 0) {
						print "dup 2\n";
						next;
					}
				}
				if ($phone_digest ne '') {
					$sql = "select count(*) from snapshot where phone_digest = '$phone_digest'";
					my $request = $db_conn->prepare($sql);
					my $result = $request->execute();
					my ($count) = $request->fetchrow_array;
					if ($count > 0) {
						print "dup 3\n";
						next;
					}
				}
				my $crawl_number = int(rand(10));
				$db_conn->do("insert into snapshot(domain, city, query, title, url, phone_image_name, phone_num, contact_person, phone_digest, crawl_number) values('$gbk_domain', '$gbk_city', '$gbk_query', $title_encoded, '$result_url', '$phone_image_name', '$phone_num', '$gbk_contact_person', '$phone_digest', $crawl_number)");
#				print "$gbk_query\t$domain\t$gbk_city\t$result_url\t$title_encoded\t$phone_image_name\n";
			}
#			exit;
#			print "$url\n";
		}
	}
}
